Creating an Object Pointer

AVIBall uses the following structure as its object pointer. The first member of this structure points to the virtual function table that AVIBall uses to access its functions. Applications can cast this structure to the PAVISTREAM data type. Methods that use the PAVISTREAM data type use only the pointer to the virtual function table. The members following the pointer to the virtual function table are used internally by AVIBall.

typedef struct

    IAVIStreamVtbl FAR * lpvtbl;

 

    // Ball instance data.

    ULONG    ulRefCount;

    DWORD    fccType;  // is this audio/video?

    int            width;    // size, in pixels, of each frame

    int            height;

    int            length;   // length, in frames

    int            size;

    COLORREF     color;    // ball color

} AVIBALL, FAR * PAVIBALL;